/*
 * Copyright 2018 JDCLOUD.COM
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http:#www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * Database Audit API
 * Database Audit API
 *
 * OpenAPI spec version: v1
 * Contact: 
 *
 * NOTE: This class is auto generated by the jdcloud code generator program.
 */


using JDCloudSDK.Core.Auth;
using JDCloudSDK.Core.Client;
using JDCloudSDK.Core.Http;
using JDCloudSDK.Dbaudit.Apis;
using JDCloudSDK.Dbaudit.Model;
using System;
using System.Collections.Generic;
using System.Text;
#if NET40||NET35
#else
using System.Threading.Tasks;
#endif

namespace JDCloudSDK.Dbaudit.Client
{
    /// <summary>
    ///  Database Audit API
    ///  Database Audit API
    ///  Dbaudit Api 客户端
    ///</summary>
    public class DbauditClient : JdcloudClient
    {

        /// <summary>
        ///  默认私有构造函数
        /// </summary>
        private DbauditClient()
        {

        }

        /// <summary>
        /// 默认构造函数
        /// </summary>
        /// <param name="credentialsProvider">认证信息</param>
        /// <param name="httpRequestConfig">http 客户端配置信息</param>
        /// <param name="environment">sdk 环境配置信息</param>
        public DbauditClient(CredentialsProvider credentialsProvider, HttpRequestConfig httpRequestConfig,SDKEnvironment environment)
        {
            this.httpRequestConfig = httpRequestConfig;
            this.credentialsProvider = credentialsProvider;
            this.environment = environment;
        }

        /// <summary>
        /// 默认构造函数
        /// </summary>
        /// <param name="httpRequestConfig">http 客户端配置信息</param>
        /// <param name="credentialsProvider">认证信息</param>
        public DbauditClient(CredentialsProvider credentialsProvider,HttpRequestConfig httpRequestConfig)
        {
            this.httpRequestConfig = httpRequestConfig;
            this.credentialsProvider = credentialsProvider;
        }

        /// <summary>
        /// 默认构造函数，
        /// 注意如果使用此方法 httpRequestConfig 使用的http 请求 schema 为Https
        /// </summary>
        /// <param name="credentialsProvider">认证信息</param>
        public DbauditClient(CredentialsProvider credentialsProvider)
        {
            this.credentialsProvider = credentialsProvider;
        }

        /// <summary>
        ///  版本号 1.2.3
        ///</summary>
        public const string ClientVersion = "1.2.3";

        private const string apiVersion = "v1";
        private const string userAgentPrefix = "JdcloudSdkDotNet";
        private const string defaultEndpoint = "dbaudit.jdcloud-api.com";
        private const string serviceName = "dbaudit";
        private const string userAgent = userAgentPrefix + "/" + ClientVersion + " " + serviceName + "/" + apiVersion;


        private SDKEnvironment environment = new SDKEnvironment(defaultEndpoint);
        private CredentialsProvider credentialsProvider;
        private HttpRequestConfig httpRequestConfig;

        /// <summary>
        ///  获取证书信息
        ///</summary>
        public override CredentialsProvider CredentialsProvider   { get { return credentialsProvider; } }

        /// <summary>
        ///  获取http 客户端配置信息
        ///</summary>
        public override HttpRequestConfig HttpRequestConfig { get { return httpRequestConfig; } }

        /// <summary>
        ///  获取sdk环境配置信息
        ///</summary>
        public override SDKEnvironment SDKEnvironment { get { return environment; } }

        /// <summary>
        ///  获取用户自定义浏览器识别字符串
        ///</summary>
        public override string UserAgent { get { return userAgent; } }

        /// <summary>
        ///  获取服务名称
        ///</summary>
        public override string ServiceName { get { return serviceName; } }

        /// <summary>
        ///  获取版本号
        ///</summary>
        public override string Version { get { return apiVersion; } }



#if NET40||NET35
        /// <summary>
        ///  配置数据库审计信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public SetAuditConfigResponse SetAuditConfig(SetAuditConfigRequest request) {
            return  new SetAuditConfigExecutor().Client(this).Execute<SetAuditConfigResponse, SetAuditConfigResult, SetAuditConfigRequest>(request);
        }
#else
        /// <summary>
        ///  配置数据库审计信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<SetAuditConfigResponse> SetAuditConfig(SetAuditConfigRequest request) {
            return await new SetAuditConfigExecutor().Client(this).Execute<SetAuditConfigResponse, SetAuditConfigResult, SetAuditConfigRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  启用数据库的双向审计
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public EnableAuditResponseResponse EnableAuditResponse(EnableAuditResponseRequest request) {
            return  new EnableAuditResponseExecutor().Client(this).Execute<EnableAuditResponseResponse, EnableAuditResponseResult, EnableAuditResponseRequest>(request);
        }
#else
        /// <summary>
        ///  启用数据库的双向审计
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<EnableAuditResponseResponse> EnableAuditResponse(EnableAuditResponseRequest request) {
            return await new EnableAuditResponseExecutor().Client(this).Execute<EnableAuditResponseResponse, EnableAuditResponseResult, EnableAuditResponseRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取此实例的所有IP白名单列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeIpWhiteListResponse DescribeIpWhiteList(DescribeIpWhiteListRequest request) {
            return  new DescribeIpWhiteListExecutor().Client(this).Execute<DescribeIpWhiteListResponse, DescribeIpWhiteListResult, DescribeIpWhiteListRequest>(request);
        }
#else
        /// <summary>
        ///  获取此实例的所有IP白名单列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeIpWhiteListResponse> DescribeIpWhiteList(DescribeIpWhiteListRequest request) {
            return await new DescribeIpWhiteListExecutor().Client(this).Execute<DescribeIpWhiteListResponse, DescribeIpWhiteListResult, DescribeIpWhiteListRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  添加敏感信息遮蔽规则
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public AddMaskRuleResponse AddMaskRule(AddMaskRuleRequest request) {
            return  new AddMaskRuleExecutor().Client(this).Execute<AddMaskRuleResponse, AddMaskRuleResult, AddMaskRuleRequest>(request);
        }
#else
        /// <summary>
        ///  添加敏感信息遮蔽规则
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<AddMaskRuleResponse> AddMaskRule(AddMaskRuleRequest request) {
            return await new AddMaskRuleExecutor().Client(this).Execute<AddMaskRuleResponse, AddMaskRuleResult, AddMaskRuleRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  修改网卡信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public ModyfyAuditNetCardsResponse ModyfyAuditNetCards(ModyfyAuditNetCardsRequest request) {
            return  new ModyfyAuditNetCardsExecutor().Client(this).Execute<ModyfyAuditNetCardsResponse, ModyfyAuditNetCardsResult, ModyfyAuditNetCardsRequest>(request);
        }
#else
        /// <summary>
        ///  修改网卡信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<ModyfyAuditNetCardsResponse> ModyfyAuditNetCards(ModyfyAuditNetCardsRequest request) {
            return await new ModyfyAuditNetCardsExecutor().Client(this).Execute<ModyfyAuditNetCardsResponse, ModyfyAuditNetCardsResult, ModyfyAuditNetCardsRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取敏感信息遮蔽规则列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeMaskRuleListResponse DescribeMaskRuleList(DescribeMaskRuleListRequest request) {
            return  new DescribeMaskRuleListExecutor().Client(this).Execute<DescribeMaskRuleListResponse, DescribeMaskRuleListResult, DescribeMaskRuleListRequest>(request);
        }
#else
        /// <summary>
        ///  获取敏感信息遮蔽规则列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeMaskRuleListResponse> DescribeMaskRuleList(DescribeMaskRuleListRequest request) {
            return await new DescribeMaskRuleListExecutor().Client(this).Execute<DescribeMaskRuleListResponse, DescribeMaskRuleListResult, DescribeMaskRuleListRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  下载此任务报表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DownloadReportResponse DownloadReport(DownloadReportRequest request) {
            return  new DownloadReportExecutor().Client(this).Execute<DownloadReportResponse, DownloadReportResult, DownloadReportRequest>(request);
        }
#else
        /// <summary>
        ///  下载此任务报表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DownloadReportResponse> DownloadReport(DownloadReportRequest request) {
            return await new DownloadReportExecutor().Client(this).Execute<DownloadReportResponse, DownloadReportResult, DownloadReportRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  删除数据库配置
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DeleteDatabaseResponse DeleteDatabase(DeleteDatabaseRequest request) {
            return  new DeleteDatabaseExecutor().Client(this).Execute<DeleteDatabaseResponse, DeleteDatabaseResult, DeleteDatabaseRequest>(request);
        }
#else
        /// <summary>
        ///  删除数据库配置
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DeleteDatabaseResponse> DeleteDatabase(DeleteDatabaseRequest request) {
            return await new DeleteDatabaseExecutor().Client(this).Execute<DeleteDatabaseResponse, DeleteDatabaseResult, DeleteDatabaseRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  新增规则
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public AddRuleResponse AddRule(AddRuleRequest request) {
            return  new AddRuleExecutor().Client(this).Execute<AddRuleResponse, AddRuleResult, AddRuleRequest>(request);
        }
#else
        /// <summary>
        ///  新增规则
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<AddRuleResponse> AddRule(AddRuleRequest request) {
            return await new AddRuleExecutor().Client(this).Execute<AddRuleResponse, AddRuleResult, AddRuleRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  修改数据库审计实例名称和描述
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public ModifyInstanceResponse ModifyInstance(ModifyInstanceRequest request) {
            return  new ModifyInstanceExecutor().Client(this).Execute<ModifyInstanceResponse, ModifyInstanceResult, ModifyInstanceRequest>(request);
        }
#else
        /// <summary>
        ///  修改数据库审计实例名称和描述
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<ModifyInstanceResponse> ModifyInstance(ModifyInstanceRequest request) {
            return await new ModifyInstanceExecutor().Client(this).Execute<ModifyInstanceResponse, ModifyInstanceResult, ModifyInstanceRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  禁用规则组
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DisableRuleGroupResponse DisableRuleGroup(DisableRuleGroupRequest request) {
            return  new DisableRuleGroupExecutor().Client(this).Execute<DisableRuleGroupResponse, DisableRuleGroupResult, DisableRuleGroupRequest>(request);
        }
#else
        /// <summary>
        ///  禁用规则组
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DisableRuleGroupResponse> DisableRuleGroup(DisableRuleGroupRequest request) {
            return await new DisableRuleGroupExecutor().Client(this).Execute<DisableRuleGroupResponse, DisableRuleGroupResult, DisableRuleGroupRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取数据库审计agent审计的数据库列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeAgentDatabasesResponse DescribeAgentDatabases(DescribeAgentDatabasesRequest request) {
            return  new DescribeAgentDatabasesExecutor().Client(this).Execute<DescribeAgentDatabasesResponse, DescribeAgentDatabasesResult, DescribeAgentDatabasesRequest>(request);
        }
#else
        /// <summary>
        ///  获取数据库审计agent审计的数据库列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeAgentDatabasesResponse> DescribeAgentDatabases(DescribeAgentDatabasesRequest request) {
            return await new DescribeAgentDatabasesExecutor().Client(this).Execute<DescribeAgentDatabasesResponse, DescribeAgentDatabasesResult, DescribeAgentDatabasesRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取数据库审计实例列表
        /// pageNumber: 页码
        /// pageSize: 每页数量
        /// nameFilter: 按名称查询
        /// filters: 按instanceId 查询，只支持eq，单个instanceId匹配
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeInstanceListResponse DescribeInstanceList(DescribeInstanceListRequest request) {
            return  new DescribeInstanceListExecutor().Client(this).Execute<DescribeInstanceListResponse, DescribeInstanceListResult, DescribeInstanceListRequest>(request);
        }
#else
        /// <summary>
        ///  获取数据库审计实例列表
        /// pageNumber: 页码
        /// pageSize: 每页数量
        /// nameFilter: 按名称查询
        /// filters: 按instanceId 查询，只支持eq，单个instanceId匹配
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeInstanceListResponse> DescribeInstanceList(DescribeInstanceListRequest request) {
            return await new DescribeInstanceListExecutor().Client(this).Execute<DescribeInstanceListResponse, DescribeInstanceListResult, DescribeInstanceListRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取数据库审计实例详情
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeInstanceResponse DescribeInstance(DescribeInstanceRequest request) {
            return  new DescribeInstanceExecutor().Client(this).Execute<DescribeInstanceResponse, DescribeInstanceResult, DescribeInstanceRequest>(request);
        }
#else
        /// <summary>
        ///  获取数据库审计实例详情
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeInstanceResponse> DescribeInstance(DescribeInstanceRequest request) {
            return await new DescribeInstanceExecutor().Client(this).Execute<DescribeInstanceResponse, DescribeInstanceResult, DescribeInstanceRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  停止报表任务
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public StopTaskResponse StopTask(StopTaskRequest request) {
            return  new StopTaskExecutor().Client(this).Execute<StopTaskResponse, StopTaskResult, StopTaskRequest>(request);
        }
#else
        /// <summary>
        ///  停止报表任务
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<StopTaskResponse> StopTask(StopTaskRequest request) {
            return await new StopTaskExecutor().Client(this).Execute<StopTaskResponse, StopTaskResult, StopTaskRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取数据库审计agent主机列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeAgentListResponse DescribeAgentList(DescribeAgentListRequest request) {
            return  new DescribeAgentListExecutor().Client(this).Execute<DescribeAgentListResponse, DescribeAgentListResult, DescribeAgentListRequest>(request);
        }
#else
        /// <summary>
        ///  获取数据库审计agent主机列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeAgentListResponse> DescribeAgentList(DescribeAgentListRequest request) {
            return await new DescribeAgentListExecutor().Client(this).Execute<DescribeAgentListResponse, DescribeAgentListResult, DescribeAgentListRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取规则组内规则列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeRuleGroupRulesResponse DescribeRuleGroupRules(DescribeRuleGroupRulesRequest request) {
            return  new DescribeRuleGroupRulesExecutor().Client(this).Execute<DescribeRuleGroupRulesResponse, DescribeRuleGroupRulesResult, DescribeRuleGroupRulesRequest>(request);
        }
#else
        /// <summary>
        ///  获取规则组内规则列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeRuleGroupRulesResponse> DescribeRuleGroupRules(DescribeRuleGroupRulesRequest request) {
            return await new DescribeRuleGroupRulesExecutor().Client(this).Execute<DescribeRuleGroupRulesResponse, DescribeRuleGroupRulesResult, DescribeRuleGroupRulesRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查看审计日志详情
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeAuditLogResponse DescribeAuditLog(DescribeAuditLogRequest request) {
            return  new DescribeAuditLogExecutor().Client(this).Execute<DescribeAuditLogResponse, DescribeAuditLogResult, DescribeAuditLogRequest>(request);
        }
#else
        /// <summary>
        ///  查看审计日志详情
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeAuditLogResponse> DescribeAuditLog(DescribeAuditLogRequest request) {
            return await new DescribeAuditLogExecutor().Client(this).Execute<DescribeAuditLogResponse, DescribeAuditLogResult, DescribeAuditLogRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  卸载agent，支持批量，多个ID用英文逗号分隔
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public UninstallAgentResponse UninstallAgent(UninstallAgentRequest request) {
            return  new UninstallAgentExecutor().Client(this).Execute<UninstallAgentResponse, UninstallAgentResult, UninstallAgentRequest>(request);
        }
#else
        /// <summary>
        ///  卸载agent，支持批量，多个ID用英文逗号分隔
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<UninstallAgentResponse> UninstallAgent(UninstallAgentRequest request) {
            return await new UninstallAgentExecutor().Client(this).Execute<UninstallAgentResponse, UninstallAgentResult, UninstallAgentRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  删除规则
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DeleteRuleResponse DeleteRule(DeleteRuleRequest request) {
            return  new DeleteRuleExecutor().Client(this).Execute<DeleteRuleResponse, DeleteRuleResult, DeleteRuleRequest>(request);
        }
#else
        /// <summary>
        ///  删除规则
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DeleteRuleResponse> DeleteRule(DeleteRuleRequest request) {
            return await new DeleteRuleExecutor().Client(this).Execute<DeleteRuleResponse, DeleteRuleResult, DeleteRuleRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  删除规则组
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DeleteRuleGroupResponse DeleteRuleGroup(DeleteRuleGroupRequest request) {
            return  new DeleteRuleGroupExecutor().Client(this).Execute<DeleteRuleGroupResponse, DeleteRuleGroupResult, DeleteRuleGroupRequest>(request);
        }
#else
        /// <summary>
        ///  删除规则组
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DeleteRuleGroupResponse> DeleteRuleGroup(DeleteRuleGroupRequest request) {
            return await new DeleteRuleGroupExecutor().Client(this).Execute<DeleteRuleGroupResponse, DeleteRuleGroupResult, DeleteRuleGroupRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  编辑敏感信息遮蔽规则
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public ModifyMaskResponse ModifyMask(ModifyMaskRequest request) {
            return  new ModifyMaskExecutor().Client(this).Execute<ModifyMaskResponse, ModifyMaskResult, ModifyMaskRequest>(request);
        }
#else
        /// <summary>
        ///  编辑敏感信息遮蔽规则
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<ModifyMaskResponse> ModifyMask(ModifyMaskRequest request) {
            return await new ModifyMaskExecutor().Client(this).Execute<ModifyMaskResponse, ModifyMaskResult, ModifyMaskRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取规则详情
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeRuleResponse DescribeRule(DescribeRuleRequest request) {
            return  new DescribeRuleExecutor().Client(this).Execute<DescribeRuleResponse, DescribeRuleResult, DescribeRuleRequest>(request);
        }
#else
        /// <summary>
        ///  获取规则详情
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeRuleResponse> DescribeRule(DescribeRuleRequest request) {
            return await new DescribeRuleExecutor().Client(this).Execute<DescribeRuleResponse, DescribeRuleResult, DescribeRuleRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  取消对该数据库的审计，支持批量，多个ID用英文逗号分隔
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DeleteAuditFromAgentResponse DeleteAuditFromAgent(DeleteAuditFromAgentRequest request) {
            return  new DeleteAuditFromAgentExecutor().Client(this).Execute<DeleteAuditFromAgentResponse, DeleteAuditFromAgentResult, DeleteAuditFromAgentRequest>(request);
        }
#else
        /// <summary>
        ///  取消对该数据库的审计，支持批量，多个ID用英文逗号分隔
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DeleteAuditFromAgentResponse> DeleteAuditFromAgent(DeleteAuditFromAgentRequest request) {
            return await new DeleteAuditFromAgentExecutor().Client(this).Execute<DeleteAuditFromAgentResponse, DeleteAuditFromAgentResult, DeleteAuditFromAgentRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  启动报表任务
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public StartTaskResponse StartTask(StartTaskRequest request) {
            return  new StartTaskExecutor().Client(this).Execute<StartTaskResponse, StartTaskResult, StartTaskRequest>(request);
        }
#else
        /// <summary>
        ///  启动报表任务
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<StartTaskResponse> StartTask(StartTaskRequest request) {
            return await new StartTaskExecutor().Client(this).Execute<StartTaskResponse, StartTaskResult, StartTaskRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  新增规则组
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public AddRuleGroupResponse AddRuleGroup(AddRuleGroupRequest request) {
            return  new AddRuleGroupExecutor().Client(this).Execute<AddRuleGroupResponse, AddRuleGroupResult, AddRuleGroupRequest>(request);
        }
#else
        /// <summary>
        ///  新增规则组
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<AddRuleGroupResponse> AddRuleGroup(AddRuleGroupRequest request) {
            return await new AddRuleGroupExecutor().Client(this).Execute<AddRuleGroupResponse, AddRuleGroupResult, AddRuleGroupRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  修改agent资源限额,支持多个agentId,英文逗号分隔
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public ModyfyAgentLimitsResponse ModyfyAgentLimits(ModyfyAgentLimitsRequest request) {
            return  new ModyfyAgentLimitsExecutor().Client(this).Execute<ModyfyAgentLimitsResponse, ModyfyAgentLimitsResult, ModyfyAgentLimitsRequest>(request);
        }
#else
        /// <summary>
        ///  修改agent资源限额,支持多个agentId,英文逗号分隔
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<ModyfyAgentLimitsResponse> ModyfyAgentLimits(ModyfyAgentLimitsRequest request) {
            return await new ModyfyAgentLimitsExecutor().Client(this).Execute<ModyfyAgentLimitsResponse, ModyfyAgentLimitsResult, ModyfyAgentLimitsRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取审计日志列表
        /// 时间范围[0-180天]
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeAuditLogListResponse DescribeAuditLogList(DescribeAuditLogListRequest request) {
            return  new DescribeAuditLogListExecutor().Client(this).Execute<DescribeAuditLogListResponse, DescribeAuditLogListResult, DescribeAuditLogListRequest>(request);
        }
#else
        /// <summary>
        ///  获取审计日志列表
        /// 时间范围[0-180天]
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeAuditLogListResponse> DescribeAuditLogList(DescribeAuditLogListRequest request) {
            return await new DescribeAuditLogListExecutor().Client(this).Execute<DescribeAuditLogListResponse, DescribeAuditLogListResult, DescribeAuditLogListRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取任务下的报表列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeReportListResponse DescribeReportList(DescribeReportListRequest request) {
            return  new DescribeReportListExecutor().Client(this).Execute<DescribeReportListResponse, DescribeReportListResult, DescribeReportListRequest>(request);
        }
#else
        /// <summary>
        ///  获取任务下的报表列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeReportListResponse> DescribeReportList(DescribeReportListRequest request) {
            return await new DescribeReportListExecutor().Client(this).Execute<DescribeReportListResponse, DescribeReportListResult, DescribeReportListRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  新建数据库配置
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public AddDatabaseResponse AddDatabase(AddDatabaseRequest request) {
            return  new AddDatabaseExecutor().Client(this).Execute<AddDatabaseResponse, AddDatabaseResult, AddDatabaseRequest>(request);
        }
#else
        /// <summary>
        ///  新建数据库配置
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<AddDatabaseResponse> AddDatabase(AddDatabaseRequest request) {
            return await new AddDatabaseExecutor().Client(this).Execute<AddDatabaseResponse, AddDatabaseResult, AddDatabaseRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  安装数据库审计agent
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public InstallAgentResponse InstallAgent(InstallAgentRequest request) {
            return  new InstallAgentExecutor().Client(this).Execute<InstallAgentResponse, InstallAgentResult, InstallAgentRequest>(request);
        }
#else
        /// <summary>
        ///  安装数据库审计agent
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<InstallAgentResponse> InstallAgent(InstallAgentRequest request) {
            return await new InstallAgentExecutor().Client(this).Execute<InstallAgentResponse, InstallAgentResult, InstallAgentRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  删除敏感信息遮蔽规则
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DeleteMaskResponse DeleteMask(DeleteMaskRequest request) {
            return  new DeleteMaskExecutor().Client(this).Execute<DeleteMaskResponse, DeleteMaskResult, DeleteMaskRequest>(request);
        }
#else
        /// <summary>
        ///  删除敏感信息遮蔽规则
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DeleteMaskResponse> DeleteMask(DeleteMaskRequest request) {
            return await new DeleteMaskExecutor().Client(this).Execute<DeleteMaskResponse, DeleteMaskResult, DeleteMaskRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取数据库详情
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeDatabaseResponse DescribeDatabase(DescribeDatabaseRequest request) {
            return  new DescribeDatabaseExecutor().Client(this).Execute<DescribeDatabaseResponse, DescribeDatabaseResult, DescribeDatabaseRequest>(request);
        }
#else
        /// <summary>
        ///  获取数据库详情
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeDatabaseResponse> DescribeDatabase(DescribeDatabaseRequest request) {
            return await new DescribeDatabaseExecutor().Client(this).Execute<DescribeDatabaseResponse, DescribeDatabaseResult, DescribeDatabaseRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  修改数据库描述或配置
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public UpdateDatabaseResponse UpdateDatabase(UpdateDatabaseRequest request) {
            return  new UpdateDatabaseExecutor().Client(this).Execute<UpdateDatabaseResponse, UpdateDatabaseResult, UpdateDatabaseRequest>(request);
        }
#else
        /// <summary>
        ///  修改数据库描述或配置
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<UpdateDatabaseResponse> UpdateDatabase(UpdateDatabaseRequest request) {
            return await new UpdateDatabaseExecutor().Client(this).Execute<UpdateDatabaseResponse, UpdateDatabaseResult, UpdateDatabaseRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  添加一条IP白名单记录
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public AddIpWhiteItemResponse AddIpWhiteItem(AddIpWhiteItemRequest request) {
            return  new AddIpWhiteItemExecutor().Client(this).Execute<AddIpWhiteItemResponse, AddIpWhiteItemResult, AddIpWhiteItemRequest>(request);
        }
#else
        /// <summary>
        ///  添加一条IP白名单记录
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<AddIpWhiteItemResponse> AddIpWhiteItem(AddIpWhiteItemRequest request) {
            return await new AddIpWhiteItemExecutor().Client(this).Execute<AddIpWhiteItemResponse, AddIpWhiteItemResult, AddIpWhiteItemRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  修改任务的配置信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public ModifyTaskResponse ModifyTask(ModifyTaskRequest request) {
            return  new ModifyTaskExecutor().Client(this).Execute<ModifyTaskResponse, ModifyTaskResult, ModifyTaskRequest>(request);
        }
#else
        /// <summary>
        ///  修改任务的配置信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<ModifyTaskResponse> ModifyTask(ModifyTaskRequest request) {
            return await new ModifyTaskExecutor().Client(this).Execute<ModifyTaskResponse, ModifyTaskResult, ModifyTaskRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  禁用数据库的双向审计
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DisableAuditResponseResponse DisableAuditResponse(DisableAuditResponseRequest request) {
            return  new DisableAuditResponseExecutor().Client(this).Execute<DisableAuditResponseResponse, DisableAuditResponseResult, DisableAuditResponseRequest>(request);
        }
#else
        /// <summary>
        ///  禁用数据库的双向审计
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DisableAuditResponseResponse> DisableAuditResponse(DisableAuditResponseRequest request) {
            return await new DisableAuditResponseExecutor().Client(this).Execute<DisableAuditResponseResponse, DisableAuditResponseResult, DisableAuditResponseRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  创建任务报表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public CreateTaskResponse CreateTask(CreateTaskRequest request) {
            return  new CreateTaskExecutor().Client(this).Execute<CreateTaskResponse, CreateTaskResult, CreateTaskRequest>(request);
        }
#else
        /// <summary>
        ///  创建任务报表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<CreateTaskResponse> CreateTask(CreateTaskRequest request) {
            return await new CreateTaskExecutor().Client(this).Execute<CreateTaskResponse, CreateTaskResult, CreateTaskRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取数据库列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeDatabasesResponse DescribeDatabases(DescribeDatabasesRequest request) {
            return  new DescribeDatabasesExecutor().Client(this).Execute<DescribeDatabasesResponse, DescribeDatabasesResult, DescribeDatabasesRequest>(request);
        }
#else
        /// <summary>
        ///  获取数据库列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeDatabasesResponse> DescribeDatabases(DescribeDatabasesRequest request) {
            return await new DescribeDatabasesExecutor().Client(this).Execute<DescribeDatabasesResponse, DescribeDatabasesResult, DescribeDatabasesRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  删除此任务，如果任务下有报表，需要首先删除任务下的报表才能删除此任务
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DeleteTaskResponse DeleteTask(DeleteTaskRequest request) {
            return  new DeleteTaskExecutor().Client(this).Execute<DeleteTaskResponse, DeleteTaskResult, DeleteTaskRequest>(request);
        }
#else
        /// <summary>
        ///  删除此任务，如果任务下有报表，需要首先删除任务下的报表才能删除此任务
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DeleteTaskResponse> DeleteTask(DeleteTaskRequest request) {
            return await new DeleteTaskExecutor().Client(this).Execute<DeleteTaskResponse, DeleteTaskResult, DeleteTaskRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取任务列表
        /// 一次性任务报表时间范围[0-30天]
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeTaskListResponse DescribeTaskList(DescribeTaskListRequest request) {
            return  new DescribeTaskListExecutor().Client(this).Execute<DescribeTaskListResponse, DescribeTaskListResult, DescribeTaskListRequest>(request);
        }
#else
        /// <summary>
        ///  获取任务列表
        /// 一次性任务报表时间范围[0-30天]
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeTaskListResponse> DescribeTaskList(DescribeTaskListRequest request) {
            return await new DescribeTaskListExecutor().Client(this).Execute<DescribeTaskListResponse, DescribeTaskListResult, DescribeTaskListRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  删除此任务报表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DeleteReportResponse DeleteReport(DeleteReportRequest request) {
            return  new DeleteReportExecutor().Client(this).Execute<DeleteReportResponse, DeleteReportResult, DeleteReportRequest>(request);
        }
#else
        /// <summary>
        ///  删除此任务报表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DeleteReportResponse> DeleteReport(DeleteReportRequest request) {
            return await new DeleteReportExecutor().Client(this).Execute<DeleteReportResponse, DeleteReportResult, DeleteReportRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  删除一条IP白名单记录
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DeleteIpWhiteItemResponse DeleteIpWhiteItem(DeleteIpWhiteItemRequest request) {
            return  new DeleteIpWhiteItemExecutor().Client(this).Execute<DeleteIpWhiteItemResponse, DeleteIpWhiteItemResult, DeleteIpWhiteItemRequest>(request);
        }
#else
        /// <summary>
        ///  删除一条IP白名单记录
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DeleteIpWhiteItemResponse> DeleteIpWhiteItem(DeleteIpWhiteItemRequest request) {
            return await new DeleteIpWhiteItemExecutor().Client(this).Execute<DeleteIpWhiteItemResponse, DeleteIpWhiteItemResult, DeleteIpWhiteItemRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  启用规则组
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public EnableRuleGroupResponse EnableRuleGroup(EnableRuleGroupRequest request) {
            return  new EnableRuleGroupExecutor().Client(this).Execute<EnableRuleGroupResponse, EnableRuleGroupResult, EnableRuleGroupRequest>(request);
        }
#else
        /// <summary>
        ///  启用规则组
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<EnableRuleGroupResponse> EnableRuleGroup(EnableRuleGroupRequest request) {
            return await new EnableRuleGroupExecutor().Client(this).Execute<EnableRuleGroupResponse, EnableRuleGroupResult, EnableRuleGroupRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  编辑规则组内的规则
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public ModifyRuleResponse ModifyRule(ModifyRuleRequest request) {
            return  new ModifyRuleExecutor().Client(this).Execute<ModifyRuleResponse, ModifyRuleResult, ModifyRuleRequest>(request);
        }
#else
        /// <summary>
        ///  编辑规则组内的规则
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<ModifyRuleResponse> ModifyRule(ModifyRuleRequest request) {
            return await new ModifyRuleExecutor().Client(this).Execute<ModifyRuleResponse, ModifyRuleResult, ModifyRuleRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  下发规则组到指定dbIds
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DeployRuleGroupResponse DeployRuleGroup(DeployRuleGroupRequest request) {
            return  new DeployRuleGroupExecutor().Client(this).Execute<DeployRuleGroupResponse, DeployRuleGroupResult, DeployRuleGroupRequest>(request);
        }
#else
        /// <summary>
        ///  下发规则组到指定dbIds
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DeployRuleGroupResponse> DeployRuleGroup(DeployRuleGroupRequest request) {
            return await new DeployRuleGroupExecutor().Client(this).Execute<DeployRuleGroupResponse, DeployRuleGroupResult, DeployRuleGroupRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取规则组列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeRuleGroupsResponse DescribeRuleGroups(DescribeRuleGroupsRequest request) {
            return  new DescribeRuleGroupsExecutor().Client(this).Execute<DescribeRuleGroupsResponse, DescribeRuleGroupsResult, DescribeRuleGroupsRequest>(request);
        }
#else
        /// <summary>
        ///  获取规则组列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeRuleGroupsResponse> DescribeRuleGroups(DescribeRuleGroupsRequest request) {
            return await new DescribeRuleGroupsExecutor().Client(this).Execute<DescribeRuleGroupsResponse, DescribeRuleGroupsResult, DescribeRuleGroupsRequest>(request).ConfigureAwait(false);
        }
#endif

            /// <summary>
            ///  默认DbauditClient 构造器 接口
            ///</summary>
            public interface Builder
            {

                /// <summary>
                /// 设置认证信息参数
                /// </summary>
                /// <param name="provider">认证信息提供对象</param>
                /// <returns>dbauditClient 构造器</returns>
                Builder CredentialsProvider(CredentialsProvider provider);

                /// <summary>
                /// 设置请求环境参数
                /// </summary>
                /// <param name="environment">环境参数信息</param>
                /// <returns>dbauditClient 构造器</returns>
                Builder Environment(Core.Client.SDKEnvironment environment);

                /// <summary>
                /// http 请求配置信息
                /// </summary>
                /// <param name="config">http 请求配置信息</param>
                /// <returns>dbauditClient 构造器</returns>
                Builder HttpRequestConfig(HttpRequestConfig config);

                /// <summary>
                ///  构造DbauditClient 对象
                ///</summary>
                DbauditClient Build();
            }

            /// <summary>
            ///  默认DbauditClient 构造器
            ///</summary>
            public class DefaultBuilder : Builder
            {
                /// <summary>
                ///  DbauditClient service client
                /// </summary>
                private  DbauditClient dbauditClient;

                /// <summary>
                ///  默认DbauditClient 构造器构造对象
                ///</summary>
                public DefaultBuilder()
                {
                    dbauditClient = new DbauditClient();
                }

                /// <summary>
                ///  构造DbauditClient 对象
                ///</summary>
                public DbauditClient Build()
                {
                    if (dbauditClient.CredentialsProvider == null)
                    {
                        //if credentialsProvider not set, try load jdcloud global default  credentials provider
                        dbauditClient.credentialsProvider = JdCloud.DefaultInstance.GetCredentialsProvider();
                        if (dbauditClient.credentialsProvider == null)
                        {
                            throw new ArgumentNullException("DbauditClient build error: jdcloud credentials provider not set");
                        }
                    }
                    if (dbauditClient.HttpRequestConfig == null)
                    {
                        dbauditClient.httpRequestConfig = JdCloud.DefaultInstance.GetHttpRequestConfig();
                        if (dbauditClient.httpRequestConfig == null)
                        {
                        throw new ArgumentNullException("DbauditClient build error: http request config not set");
                        }
                    }
                    return dbauditClient;
                }

                /// <summary>
                /// 设置认证信息参数
                /// </summary>
                /// <param name="provider">认证信息提供对象</param>
                /// <returns>dbauditClient 构造器</returns>
                public Builder CredentialsProvider(CredentialsProvider provider)
                {
                    dbauditClient.credentialsProvider = provider;
                    return this;
                }

                /// <summary>
                /// 设置请求环境参数
                /// </summary>
                /// <param name="environment">环境参数信息</param>
                /// <returns>dbauditClient 构造器</returns>
                public Builder Environment(SDKEnvironment environment)
                {
                    dbauditClient.environment = environment;
                    return this;
                }

                /// <summary>
                /// http 请求配置信息
                /// </summary>
                /// <param name="config">http 请求配置信息</param>
                /// <returns>dbauditClient 构造器</returns>
                public Builder HttpRequestConfig(HttpRequestConfig config)
                {
                    dbauditClient.httpRequestConfig = config;
                    return this;
                }
            }
    }
}
